package com.juc.semaphore.semaphore11;

import java.util.concurrent.Semaphore;

public class Service {
    /**
     * 无参tryAcquire() 的作用是尝试的获得1个许可，如果获取不到就返回false,此方法常与
     * if语句结合使用，其具有无阻塞的特点。
     * 无阻塞的特点可以使线程不至于在同步处一直持续的等待的状态，如果if语句不成立线程则会走
     * else语句，程序会继续的往下执行。
     */
    private Semaphore semaphore = new Semaphore(1);

    public void testMethod(){
        if (semaphore.tryAcquire()) {
            System.out.println("threadName = " + Thread.currentThread().getName() + " 首选进入！");
            for (int i = 0; i < Integer.MAX_VALUE ; i++) {
                String newStr = new String();
                Math.random();
            }
            semaphore.release();
        }else{
            System.out.println("threadName = " + Thread.currentThread().getName() + " 未成功进入！");

        }
    }
}
